{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "实验一 实验指导书使用\n",
    "===="
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 1. 实验类型\n",
    "验证型，1学时，必做实验"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 2.  实验目的\n",
    "了解实验指导书交互式操作环境的特点，掌握交互环境的基本使用，为后续实验过程的开展打下基础。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 3. 题目描述\n",
    "本实验以本课程实验指导书的使用方式为内容，包括本课程实验指导书的交互式操作、文档编辑方式等。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 4. 实验要求\n",
    "*基本层次：掌握实验指导书的交互式操作，以及编辑文本内容的方法。\n",
    "\n",
    "*提高层次：利用参考资料，熟悉交互式文档的其他高级排版方法。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 5. 相关知识\n",
    "本课程实验指导书采用Jupyter Notebook(JNB)编写的JNB文档(文件后缀名为.ipynb)，并采用JNB提供的交互式操作进行实验。\n",
    "\n",
    "Jupyter Notebook(JNB) 是一个Web应用程序（[官网](http://jupyter.org/)），可以用来创建包含可运行代码、计算公式、可以化展示以及文字说明的交互式文档，支持包括Python, R, Scala, Shell, Octave等40种编程语言，可以转换成pdf、HTML、Markdown等格式的文档。近年来，JNB越来越多地被大学、公司、实验室等机构用来作为程序设计语言、数据挖掘、统计建模、数据分析等内容的教学培训、书籍出版、学术交流等用途。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "JNB文档本质上是一个JSON文件（[参考文档](http://jupyter-notebook.readthedocs.io/en/latest/notebook.html)），包括多个输入和输出行组成的交互会话，以及不能交互的文本内容。由此，JNB文档可以作为代码运行环境，以及丰富的说明文字来使用。在本课程的实验指导书中，Linux环境的Shell代码运行环境和运行结果作为交互式会话，实验过程的介绍则作为说明文字出现。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 6. 实验设备\n",
    "实验者需要使用各自PC机上Windows操作系统的putty程序通过网络连接到Linux服务器，Linux服务器地址由指导教师给出，使用实现系统的交互界面启动实验环境。如果能够看到本文档，则表示环境建立成功。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 7. 实验指导\n",
    "使用实验者Windows操作系统的putty软件连接服务器，如果看到屏幕上有“login:”字符，即表示连接成功，需要输入用户名和密码。询问指导教师获得用户名和密码，注意：输入密码时，屏幕上没有任何响应，这是正常的。登录成功能够看到Shell提示符“$”字符。退出登录，输入“exit”命令，即回到显示“login:”字符的屏幕上。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 7.1 JNB文档编写\n",
    "\n",
    "JNB文档由一系列的单元格（Cell）组成，每一个单元格包含多行文字和类型，通过“执行”（Cell->Run）操作产生输出（[文档参考](http://jupyter-notebook.readthedocs.io/en/latest/notebook.html)）。单元格类型包括代码、markdown文本、原始、标题四种，其中：\n",
    "\n",
    "### 1）代码格（Code Cell）\n",
    "\n",
    "表示单元格中的内容是代码行，运行“执行”的结果为代码行在运行环境中的执行结果。\n",
    "\n",
    "** 举  例：**\n",
    "\n",
    "增加一个单元格，设置格式为Code，输入内容为\"ls\"，选择“运行”后，该单元格的内容被作为Shell命令被执行，输出在Shell命令行下执行\"ls\"命令（即获取文件列表）的结果。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "App1.ppt  exp0.ipynb    \u001b[0m\u001b[01;34mimages\u001b[0m      \u001b[01;32mstop.bash\u001b[0m    \u001b[01;34mworkspace\u001b[0m\r\n",
      "App2.ppt  exp1-1.ipynb  \u001b[01;32mstart.bash\u001b[0m  \u001b[01;32msubmit.bash\u001b[0m\r\n"
     ]
    }
   ],
   "source": [
    "ls"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "** 任  务：**\n",
    "\n",
    "* 试试修改上例中的命令为\"ls -l\"，查看运行结果；\n",
    "* 新增加一个代码格，输入“pwd”命令，查看运行结果。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2）Markdown文本格（Markdown Cell）\n",
    "\n",
    "表示单元格中的内容是由Markdown语言书写的文本，运行“执行”显示为带有格式的文字。Markdown是一种简单的标注语言，比如用\\#表示一级标题，\\*表示列表文字等，其他的标签请参考[认识与入门 Markdown](http://sspai.com/25137)。 \n",
    "\n",
    "**举  例：**\n",
    "\n",
    "本段文字是Markdown文本格，通过鼠标双击本段文字，可以进入编辑状态。其他各段双击后都可以进入编辑状态。请查看文本的内容，文字中，\\#, \\*等都是用于标注文本格式的标签。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "** 任  务：**\n",
    "\n",
    "* 试试修改上例中的\\#为\\#\\#，查看运行结果。\n",
    "* 试试新建一个Markdown文本格，插入图片images/linux.jpg，描述为“图1 Linux吉祥物”。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 3）原始格（Raw NBConvert Cell）\n",
    "\n",
    "原始格中的文本“运行”后还是显示为文本本身，直到整个文件被NBConvert程序转化为其他文件格式时发生作用。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 4）标题格（Heading Cell）\n",
    "标题格同Markdown文本格一样，是Markdown语言书写的文本，只是被预先添加了Markdown的\\#标注，用来表示一级标题。“执行”的结果是标题文字。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 7.2 JNB的Shell环境"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "在JNB中可以打开一个Shell命令环境，可用于访问Shell命令行环境。在本课程的实验指导书中打开的实验环境是一个与登录服务器隔离的实验环境，操作者可以root的身份运行命令。具体访问的方法有两种：\n",
    "\n",
    "### 1）链接方式\n",
    "\n",
    "本实验的其他实验指导书中，出现“点击[这里](/terminals/1)”时，点击该链接可以打开一个Shell环境的窗口。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2）操作方式\n",
    "\n",
    "实验指导书首页中，访问“New->Terminal”菜单，也可以打开一个Shell环境的窗口。首页界面中的“Running”页还可以关闭Shell环境和指导书。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![打开Shell窗口操作界面](images/exp0-1.jpg)\n",
    "\n",
    "<center>图0-1 打开Shell窗口操作界面</center>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![关闭Shell窗口操作界面](images/exp0-2.jpg)\n",
    "\n",
    "<center>图0-2 关闭Shell窗口操作界面</center>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "** 任  务：**\n",
    "\n",
    "* 采用“操作方式”打开一个Shell窗口。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 9 实验思考\n",
    "\n",
    "1、如何保存实验指导书为pdf文件？（直接导出存在问题）"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Bash",
   "language": "bash",
   "name": "bash"
  },
  "language_info": {
   "codemirror_mode": "shell",
   "file_extension": ".sh",
   "mimetype": "text/x-sh",
   "name": "bash"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
